import {ClusterLayer} from 'maptalks.markercluster';


class cluster {
  /**
   * 创建 Cluster 图层 并 设置 markers
   * @param layerId
   * @param markerArr
   * @param symbol
   * @returns {null|*}
   */
  ctCreateCluster(layerId, markerArr, symbol) {
    if (arguments.length === 1) {
      return new ClusterLayer(layerId);
    } else if (arguments.length === 2) {
      return new ClusterLayer(layerId, markerArr);
    } else if (arguments.length === 3) {
      return new ClusterLayer(layerId, markerArr, symbol);
    } else {
      return null
    }
  }

  /**
   * 添加 marker 对象
   * @param clusterLayer  图层
   * @param markerArr marker数组
   */
  ctAddMarkers(clusterLayer, markerArr) {
    clusterLayer.addMarker(markerArr)
  }

  /**
   * 将图层 纳入 地图
   * @param clusterLayer
   * @param map
   */
  ctAddTo(clusterLayer, map) {
    clusterLayer.addTo(map);
  }

  /**
   * 配置 cluster 样式
   * @param clusterLayer
   * @param config 形如
   *{
      textSymbol: {
        textFaceName: 'monospace',
        textSize: 16
      }
    }
   */
  ctSetConfig(clusterLayer, config) {
    clusterLayer.config(config);
  }

  ctSetSymbol(clusterLayer, symbol) {
    clusterLayer.config({
      symbol: symbol
    });
  }

  /**
   * 设置最大半径
   * @param clusterLayer 图层
   * @param r 半径
   */
  ctSetMaxClusterRadius(clusterLayer, r) {
    clusterLayer.config('maxClusterRadius', r);
  }

  /**
   * 导出 the layer's JSON.
   * @param clusterLayer
   * @returns {*}
   */
  ctToJSON(clusterLayer) {
    return clusterLayer.toJSON();
  }
}

export default new cluster()
